package com.shujia

class Demo01HelloWorldScala {
  /**
   * 在Scala中并没有static关键字，所以在class中定义的方法或者是变量都是成员的方法或属性
   * 所以在class中定义的main方法就是普通的成员方法，需要通过类的对象进行"调用"
   * 所以如果想要直接通过“类对象”调用main方法，则需要让它作为静态方法出现
   * main方法是保留的一个方法，不能放在class中定义
   */
  //  def main(args: Array[String]): Unit = {
  //    System.out.println("HelloWorld Scala!")
  //  }
  def printHello(): Unit = {
    println("Hello Scala")
  }

}

/**
 * 在object中定义的所有的属性和方法都是静态的
 * 在这里定义的Demo01HelloWorldScala实际上可以成为“类对象”
 */
object Demo01HelloWorldScala {
  def printWorld(): Unit = {
    println("World Scala")
  }

  /**
   * Scala中函数的定义：
   * def 声明一个函数
   * main 方法名
   * args 参数名
   * Array[String] 参数类型
   * Unit 返回值类型，相当于Java中的void，表示没有返回值
   * {} 函数体
   *
   * Scala中其实也有访问权限修饰符，但一般不用
   */
  def main(args: Array[String]): Unit = {
    //    System.out.println("HelloWorld Scala!") // Java的打印风格
    println("HelloWorld Scala!") // Scala的打印风格

    // 调用printHello：需要通过new类的对象进行调用
    new Demo01HelloWorldScala().printHello()

    // 调用printWorld：直接通过类对象进行调用
    Demo01HelloWorldScala.printWorld()

  }
}
